package cn.imnaer.service.rpc.friendcircle;

import cn.imnaer.service.rest.view.model.FriendMessage;
import cn.imnaer.service.rest.view.model.SharePhotoResponse;
import cn.imnaer.service.rpc.enums.EnumFriendCircleType;

import java.util.List;

/**
 * Created by Administrator on 2015/5/8.
 */
public interface FriendCircleComponentRpcApi {

    /**
     * 加载玩伴信息
     * <p>
     * 此方法根据标准时间戳筛选数据
     * 参数isUpdate决定加载标准时间戳之前或之后的数据
     * <p/>
     * 好友关系可以查看,
     * 非好友暂时无法查看
     * </p>
     *
     * @param myUserId
     * @param targetUserId
     * @param criteriaTime
     * @param isUpdate     <p>
     *                     true : 拉取标准时间戳之后的数据
     *                     false : 拉取标准时间戳之前的数据 (10) 条
     *                     </p>
     * @return
     */
    public List<FriendMessage> loadFriendCircleList(String myUserId, String targetUserId, long criteriaTime, boolean isUpdate, EnumFriendCircleType... friendCircleType);

    /**
     * 加载有权限查看的玩伴信息
     * <p/>
     * 此方法根据标准时间戳筛选数据
     * 参数isUpdate决定加载标准时间戳之前或之后的数据
     * <p/>
     *
     * @param myUserId
     * @param criteriaTime
     * @param isUpdate     <p>
     *                     true : 拉取标准时间戳之后的数据
     *                     false : 拉取标准时间戳之前的数据 (10) 条
     *                     </p>
     * @return
     */
    
    public List<FriendMessage> loadFriendCircleList(String myUserId, long criteriaTime, boolean isUpdate, EnumFriendCircleType... friendCircleType);


    /**
     * 加载朋友经验, 根据好友和景点ID匹配, 同样具备时间戳分页
     * @param myUserId
     * @param scenicId
     * @param criteriaTime
     * @param isUpdate
     * @param friendCircleType
     * @return
     */
    public List<FriendMessage> loadFriendCircleByScenicId(String myUserId, String scenicId, long criteriaTime, boolean isUpdate, EnumFriendCircleType... friendCircleType);


    /**
     * 加载首个朋友经验, 根据好友和景点ID匹配
     * @param myUserId
     * @param scenicId
     * @param friendCircleType
     * @return
     */
    public FriendMessage getFirstFriendCircleByScenicId(String myUserId, String scenicId, EnumFriendCircleType... friendCircleType);


    /**
     * 删除朋友圈个人相册信息
     * <p>
     * 此方法会同时删除相关信息.
     * 相关信息包括:
     * 1. 个人相片
     * 2. 评论
     * </p>
     *
     * @param sharePhotoId
     */
    public void deleteFriendCircleOfSharePhotoAndRelevantInfo(String sharePhotoId);
    
    public   void    PublishToFriendCricle(Object  object);
}
